// Copyright 2022 a.o.smith ALL Rights Reserved
package com.liuxinlong.modules.dao;

import com.liuxinlong.modules.entity.Inventory;
import com.baomidou.mybatisplus.service.IService;

import java.util.List;
import java.util.Map;

/**
 * 库存管理dao接口
 *
 * @author liuxinlong@hotwater.com.cn
 * @version 1.0.0
 * @since 2022年5月20日
 */
public interface InventoryDao extends IService<Inventory> {
    /**
     * 分页查询库存信息
     *
     * @param queryParam 请求信息
     * @return 库存信息列表
     */
    List<Inventory> pageInventoryList(Map<String, Object> queryParam);

    /**
     * 查询库存信息总数
     *
     * @param queryParam 请求信息
     * @return 库存信息总数
     */
    int getInventoryCount(Map<String, Object> queryParam);

    /**
     * 新增库存信息
     *
     * @param material 库存信息
     */
    void addInventory(Inventory material);

    /**
     * 更新库存信息
     *
     * @param material 库存信息
     */
    void updateInventory(Inventory material);

    /**
     * 删除库存信息
     *
     * @param id 库存id
     */
    void deleteInventory(String id);

    /**
     * 根据查询条件获取库存信息
     *
     * @param queryParam 询条件
     * @return 库存信息
     */
    List<Inventory> getInventoryList(Map<String, Object> queryParam);

    /**
     * 批量变更库存状态信息
     *
     * @param targetNoList 目标库存号
     * @param targetStatus 目标状态
     */
    void batchUpdateInventoryStatus(List<String> targetNoList, String targetStatus);

    /**
     * 根据条件查询库存信息
     *
     * @param sn 编号
     * @param purchaseTime 采购时间
     * @return 库存信息
     */
    Inventory selectOneByParam(String sn, String purchaseTime);

    /**
     * 获取可用库存记录信息
     *
     * @return 可用库存记录信息列表
     */
    List<Inventory> queryAvailableInfo();

    /**
     * 批量清空剩余库存数量
     *
     * @param targetList 目标id
     */
    void batchUpdateLeftNum(List<String> targetList);
}
